package leetcode_core.leetcode_4;

import java.util.HashMap;
import java.util.Map;

/**
 * 904
 *
 * @author: 张庭杰
 * @date: 2022年10月17日 18:08
 */
public class TotalFruit {
    public int totalFruit(int[] fruits) {
        //首先我们定义窗口[left,right]
        int left = 0,right = 0;
        int n = fruits.length;
        Map<Integer,Integer> map = new HashMap<>();
        int windows = 0;
        int max = Integer.MIN_VALUE;
        while(right < n){
            map.put(fruits[right],map.getOrDefault(fruits[right],0)+1);
            windows+=fruits[right++];
            //首先检测窗口是否要收缩了
            while (map.size()>2){
                //将left移出窗口
                windows-=fruits[left];
                map.put(fruits[left],map.getOrDefault(fruits[left],0)-1);
                if(map.get(fruits[left]) == 0){
                    map.remove(fruits[left]);
                }
                left++;
            }
            max = Math.max(max,windows);
        }
        return max;
    }
}
